package com.test.practice.oo.finalStatic;

public class MainInStaticClass {

    public static class Main {
        /**
         * The method main cannot be declared static; static methods can only be
         * declared in a static or top level type
         * 如果这个内部类Main没有被定义为静态的，那么这个类中是不允许有静态方法的
         * 只有将某个内部类修饰为静态类，然后才能够在这个类中定义静态的方法。这是静态内部类都有的一个特性。
         */
        public static void main123() {
            new MainInStaticClass().println();
        }

        /**
         * The field A cannot be declared static in a non-static inner type,
         * unless initialized with a constant expression
         * 非静态内部类也可以定义静态成员但需要同时有final关键词修饰，静态方法鉴于无法用final修饰，仍必须是在静态内部类
         * 或者非内部类中定义。
         */
        public static final int A = 2;

    }

    public void println() {
        System.out.println("main in static class");
    }

     public static void main(String[] args) {
         new MainInStaticClass().println();
     }
}
